﻿using Quartz;

namespace SimpleQuartzTemplate.Schedule
{
	/// <summary>
	/// 接口名称 ：  JobScheduler
	/// 创 建 人 ：  dongming
	/// 创建时间 ：  2025/5/8 14:07:33 
	/// 描    述 ：  
	/// </summary>

	public static class JobScheduler
	{
		/// <summary>
		/// 拓展服务，注入服务
		/// </summary>
		public static void AddInFractrostuer(this IServiceCollection services)
		{
			#region 
			//StdSchedulerFactory stdScheduler = new StdSchedulerFactory();
			//var scheduler = await stdScheduler.GetScheduler();
			//await scheduler.Start();
			//var trigger = TriggerBuilder.Create()
			//    .WithIdentity("TestTrigger", "TestGrop")
			//    .WithCronSchedule("0/1****?").Build();

			//var JobDetail = JobBuilder.Create<WCSJob>()
			//    .WithDescription("简单测试！！！")
			//    .WithIdentity("TesJob","TestGroup")
			//    .Build();
			//object value = await stdScheduler.ScheduleJob(JobDetail, Trigger);

			//_scheduler = await _schedulerFactory.GetScheduler();
			//_scheduler.JobFactory = _iocjobFactory;
			//_scheduler.Start();
			//var trigger = TriggerBuilder.Create().WithSimpleSchedule(x=>x.WithIntervalInSeconds(2).RepeatForever()).Build();
			//var jobDetail = JobBuilder.Create<WCSJob>().WithIdentity("job","group").Build();
			//await _scheduler.ScheduleJob(jobDetail, trigger);
			//return await Task.FromResult("将触发器和任务器绑定到调度器中完成");
			#endregion
			//添加Quartz服务
			services.AddQuartz(options =>
			{
				//options.UseMicrosoftDependencyInjectionJobFactory();//配置quartz，在NET中进行依赖注入容器来创建任务
			});

			services.AddQuartzHostedService(option =>//注册quartz的托管服务，自启动并关闭（优雅）
			{
				option.WaitForJobsToComplete = true;//当关闭时，需要等待执行的任务完成
			});

			//services.ConfigureOptions<JobFactory>();//配置任务工厂  因为需要使用工厂依赖注入所以需要配置工厂服务
		}

		public static void LineAll()
		{

		}
	}
}
